/*
 * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */


package java.awt;

import java.awt.image.ColorModel;
import java.awt.image.Raster;
import java.awt.image.WritableRaster;
import sun.awt.image.IntegerComponentRaster;
import java.util.Arrays;

class ColorPaintContext implements PaintContext {

  int color;
  WritableRaster savedTile;

  protected ColorPaintContext(int color, ColorModel cm) {
    this.color = color;
  }

  public void dispose() {
  }

  /*
   * Returns the RGB value representing the color in the default sRGB
   * {@link ColorModel}.
   * (Bits 24-31 are alpha, 16-23 are red, 8-15 are green, 0-7 are
   * blue).
   * @return the RGB value of the color in the default sRGB
   *         <code>ColorModel</code>.
   * @see java.awt.image.ColorModel#getRGBdefault
   * @see #getRed
   * @see #getGreen
   * @see #getBlue
   */
  int getRGB() {
    return color;
  }

  public ColorModel getColorModel() {
    return ColorModel.getRGBdefault();
  }

  public synchronized Raster getRaster(int x, int y, int w, int h) {
    WritableRaster t = savedTile;

    if (t == null || w > t.getWidth() || h > t.getHeight()) {
      t = getColorModel().createCompatibleWritableRaster(w, h);
      IntegerComponentRaster icr = (IntegerComponentRaster) t;
      Arrays.fill(icr.getDataStorage(), color);
      // Note - markDirty is probably unnecessary since icr is brand new
      icr.markDirty();
      if (w <= 64 && h <= 64) {
        savedTile = t;
      }
    }

    return t;
  }
}
